package InterviewTest.q1711_findClosest;

public class Solution_2 {
    /*
    实际上 方法1更加适合需要反复读取该文件 并且每次指定的两个单词不同的情况
    我们可以使用一个hashmap来记录其中所有出现过的单词 然后value为每个单词出现的index列表
    然后每次指定不同的两个单词时 只需要读取对应的map中的index列表 用双指针就可以解决

    但是如果我们不关注多次读取 只需要指定的两个单词时 就应该使用方法2
    只需要指定两个index变量 然后遍历一次words 遍历到其中一个单词时 直接更新即可
    也可以直接获得答案
     */
    public int findClosest(String[] words, String word1, String word2) {
        int length = words.length;
        int ans = length;
        int index1 = -1, index2 = -1;
        for (int i = 0; i < length; i++) {
            String word = words[i];
            if (word.equals(word1)) {
                index1 = i;
            } else if (word.equals(word2)) {
                index2 = i;
            }
            if (index1 >= 0 && index2 >= 0) {
                ans = Math.min(ans, Math.abs(index1 - index2));
            }
        }
        return ans;
    }

}
